/*
 *  java.util.Iterator接口：迭代器（对集合进行遍历）
 *   boolean	hasNext()   如果仍有元素可以迭代，则返回 true。
 *   E	next()          返回（取出）迭代的下一个元素。
 *
 * Iterator是一个接口，不能直接使用，需要使用他的实现类对象，
 * 在Collection接口中有一个方法，Iterator<E>	iterator()，用来返回迭代器的实现类对象
 *      Iterator<E>	iterator()       返回在此 collection 的元素上进行迭代的迭代器。
 *
 *  迭代器的使用方法：
 *      1、使用集合中方法iterator获取迭代器的实现类对象，使用Iterator接口接收（多态）
 *      2、使用Iterator接口中的方法hasnext（）判读是否有下一个元素
 *      3、使用Iterator接口中的方法next（）输出下一元素
 * */

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Iterator01 {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();
        collection.add("A");
        collection.add("B");
        collection.add("C");
        collection.add("D");

        //1、使用集合中方法iterator获取迭代器的实现类对象，使用Iterator接口接收（多态）
        //接口                        实现类对象
        Iterator<String> iterator = collection.iterator();
        //使用迭代器可以使用循环来
        

        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //使用for循环
        for (Iterator<String> iterator1 = collection.iterator(); iterator1.hasNext();){
            System.out.println(iterator1.next());
        }
        /*boolean b = iterator.hasNext();
        String next = iterator.next();
        System.out.println(next);

        b = iterator.hasNext();
        next = iterator.next();
        System.out.println(next);

        b = iterator.hasNext();
        next = iterator.next();
        System.out.println(next);

        b = iterator.hasNext();
        next = iterator.next();
        System.out.println(next);

        b = iterator.hasNext();
        next = iterator.next();
        //没有元素时输出java.util.NoSuchElementException
        System.out.println(next);*/


    }
}
